<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<style>
	.kpi_sql_validClass{
		background: url(${pageContext.request.contextPath}/images/login/sql_valid.png);
		background-repeat: no-repeat;
		margin:10px 2px 2px 2px;
		width:83px;
		height:25px;
		line-height:25px;
		cursor:pointer;
	}
</style>
<link rel="stylesheet" href="${pageContext.request.contextPath}/js/tip/stylesheets/jquery.tooltip/jquery.tooltip.css" type="text/css" />
<script type="text/javascript" src="${pageContext.request.contextPath}/js/tip/jquery.tooltip.js" charset="utf-8"></script>
<script type="text/javascript">
	$(function() {
		//增加隔行变色效果
		$(".listtable").zebra();
		$("#kpi_sql_validcontent").hide();
		 $('#btnSave').linkbutton('disable');
		//周期类型
		$('#periodtype').combobox({
			url:'${pageContext.request.contextPath}/basemgr/kqiManagerAction!getDic.action?dictType=periodType',
			valueField:'codeValue',
			textField:'codeName',
			editable:false,
			required:true,
			onLoadSuccess:function(){
				//不让第一条为默认选择项
				$('#periodtype').combobox('unselect',0);
			}
		});
		//数据提取层
		$('#datalevel').combobox({
			url:'${pageContext.request.contextPath}/basemgr/kqiManagerAction!getDic.action?dictType=dataLevel',  
			valueField:'codeValue',
			textField:'codeName',
			editable:false,
			required:true,
			onLoadSuccess:function(){
				//不让第一条为默认选择项
				$('#datalevel').combobox('unselect',0);
			}
		});	
		//数据源
		$('#datasourceid').combobox({
			url:'${pageContext.request.contextPath}/basemgr/kqiManagerAction!getDataSource.action?',  
			valueField:'codeValue',
			textField:'codeName',
			editable:false,
			required:true,
			onLoadSuccess:function(){
				//不让第一条为默认选择项
				$('#datasourceid').combobox('unselect',0);
			}
		});
		
		$("#kqisql").bind("input propertychange",function(){
			$('#btnSave').linkbutton('disable');
		});
	});	
	
	function validateKqiValue()
	{
		var len=$("#kpi_sql_validcontent").find($("input[type=radio]:checked")).length;
		if(len<=0)
		{
			$.messager.alert("提示","请选择作为指标的列");
			return;
		}else
		{
			return true;
		}
	}
	//显示指标sql的列信息
	function showColumns()
	{
		var periodType=$('#periodtype').combobox('getValue');
		if(periodType==null)
		{
			$.messager.alert('提示','请先选定周期类型！');
			return;
		}
		var dataSource=$('#datasourceid').combobox('getValue');
		if(dataSource==null){
			$.messager.alert('提示','请先选定数据源！');
			return;
		}
		var sql=$('#kqisql').val();
		if(sql==''){
			$.messager.alert('提示','指标SQL脚本不能为空！');
			$('#kqisql').focus();
			return;
		} 
		$.ajax({
			url:'${pageContext.request.contextPath}/basemgr/kqiManagerAction!showColumns.action',
			type:'POST',
			data:{dataSource:dataSource,sql:sql,periodType:periodType},
			dataType:'json',
			beforeSend:function(){
				$.messager.progress({
					title : '提示',
					text : 'sql校验中，请稍后 ....'
				});
			},
			complete :function(){
				$.messager.progress('close');
			},
			error :function(){
				$.messager.progress('close');
			},
			success:function(result){
				try {
					if(result.returnFlag)//如果指标sql校验通过，则展现指标sql的列信息
					{
						var columns=result.obj;
						var columnLength=result.obj.length;
						var rds="";//向div中添加该指标sql的列信息的checkbox
						var colIputs="";//向div中添加该指标sql的列信息的隐藏input
						var flag=false;
						var isOne=columnLength==1?true:false;//判断是不是只有一列
						for(var i=0;i<columnLength;i++)
						{
							if(isOne||((!flag)&&(columns[i].dataType=='numeric'||columns[i].dataType=='long'||columns[i].dataType=='double'||columns[i].dataType=='number'||columns[i].dataType=='integer'||columns[i].dataType=='smallint'||columns[i].dataType=='bigint'||columns[i].dataType=='decimal'||columns[i].dataType=='real')))
							{
								rds+="<div style='width:280px;height:20px;float:left;padding-left:20px;'><div style='float:right;height:20px;'>"+columns[i].colName+"("+columns[i].dataType+")";
								rds+="<input type='radio' col='"+columns[i].colName+"' checked=true onclick='chooseDimOrValue(this);chooseOne(this)' name='kqiValueColumn'  value='"+columns[i].colCode+"'><font color='red'>指标</font></>";
								rds+="<input style='margin-left:10px' type='checkbox' col='"+columns[i].colName+"' name='kqiDimColumn' onclick='chooseDimOrValue(this)' value='"+columns[i].colCode+"'><font color='#0000ff'>维度</font></></div></div>";
								flag=true;
							}else
							{
								rds+="<div style='width:280px;height:20px;float:left;padding-left:20px;'><div style='float:right;height:20px;'>"+columns[i].colName+"("+columns[i].dataType+")";
								rds+="<input type='radio' col='"+columns[i].colName+"' onclick='chooseDimOrValue(this);chooseOne(this)' name='kqiValueColumn'  value='"+columns[i].colCode+"'><font color='red'>指标</font></>";
								rds+="<input style='margin-left:10px' type='checkbox' col='"+columns[i].colName+"' onclick='chooseDimOrValue(this)' checked=true name='kqiDimColumn' value='"+columns[i].colCode+"'><font color='#0000ff'>维度</font></></div></div>";
							}
							if(checkCode(i+1)&&i!=0)
							{
								rds+="<br/>";
							}
							//把列信息保存在隐藏框中，提交form的时候可以从页面提交到后台
							colIputs+="<input type='text' name='columns["+i+"].colType' value='"+columns[i].colType+"'></input><br/>";
							colIputs+="<input type='text' name='columns["+i+"].colName' value='"+columns[i].colName+"'></input><br/>";
							colIputs+="<input type='text' name='columns["+i+"].colCode' value='"+columns[i].colCode+"'></input><br/>";
							colIputs+="<input type='text' name='columns["+i+"].dataType' value='"+columns[i].dataType+"'></input><br/>";
							colIputs+="<input type='text' name='columns["+i+"].nullAble' value='"+columns[i].nullAble+"'></input><br/>";
						}
						$("#kpi_sql_validcontent").html(rds);
						$("#sql_metadata_add").html(colIputs);
						$("#kpi_sql_validcontent").slideDown("slow");
						$('#btnSave').linkbutton('enable');
					}
					else if(!result.returnFlag)
					{
						$.messager.show({
							title:'提示',
							msg:'SQL脚本不合法，请检查！'
							});
						$("#kpi_sql_validcontent").slideUp("slow");
						$('#btnSave').linkbutton('disable');
						$.messager.progress('close');
					}
				}catch (e){
					$.messager.show({
						title:'提示',
						msg:'SQL脚本不合法，请检查！'
						});
					$("#kpi_sql_validcontent").slideUp("slow");
					$('#btnSave').linkbutton('disable');
					$.messager.progress('close');
				}
			}
		});
	}
	
	//判断是不是2的倍数,如果是2的倍数就换行
	function checkCode(code){
		if(code<0){
			return false;
		}
		while(code>1&&code%2==0){
			code = code/2
		}
		if(code==0||code==1){
			return true;
		}else{
			return false;
		}
	}
	//让checkbox只可以是单选
	function chooseOne(cb){
		var obj = document.getElementsByName("kqiValueColumn");
		for (i=0; i<obj.length; i++){
			if (obj[i]!=cb) obj[i].checked = false;
			else obj[i].checked = true;
		}
	}
	//选择了值就不能选择维度，或者选择了维度就不能选择值
	function chooseDimOrValue(cb)
	{
		//获取自定义属性col的值
		var colName=$(cb).attr("col");
		var ipt=$("#kpi_sql_validcontent").find("input[col='"+colName+"']").not(cb);
		if(ipt.is(":checked"))
		{
			if(ipt.attr("name")=='kqiDimColumn')//如果已经选择的是维度
			{
				ipt[0].checked=false;
			}else
			{
				cb.checked=false;
			}
		}
	}
</script>
<div> 
	<form id="main_form" method="post">
	<table border="0" cellpadding="0" cellspacing="0" height="100%"  width="100%" class="listtable">
	<input type="hidden" id="kqiid" name="kqiid"/>
	<div id="sql_metadata_add" style="display:none">
	</div>
	<tr>
		<td style="text-align:right;height:40px; width:15%;"><span style="color:red;font-size:15px">*</span>指标名称：&nbsp;</td>
		<td style="height: 40px;width:45%;">
			<input type="text" id="kqiname" name="kqiname" class="easyui-validatebox" data-options="invalidMessage:'指标名称已经存在或者包含特殊字符',delay:1000,required:true,missingMessage:'指标名称不能为空',validType:['maxLength[85]','specialCharFilter(\'kqiname\')','remote[\'${pageContext.request.contextPath}/basemgr/kqiManagerAction!checkNameIsValid.action?operateType=add\',\'name\']']"/>
		</td>
		<td style="text-align:right;height:40px; width:15%;"><span style="color:red;font-size:15px">*</span>指标周期类型：&nbsp;</td>
		<td style="height: 40px;width:25%;">
			<input id="periodtype" type="text"  name="periodtype" panelHeight="auto"/>
		</td>
	</tr>
	<tr>
		<td style="text-align:right;height:40px; width:15%;"><span style="color:red;font-size:15px">*</span>数据源：&nbsp;</td>
		<td style="height: 40px;width:45%;">
			<input id="datasourceid" type="text" name="datasourceid" data-options="required:true,missingMessage:'数据源不能为空'" panelHeight="auto"/>
		</td>
		<td style="text-align:right;height:40px; width:15%;"><span style="color:red;font-size:15px">*</span>数据提取层：&nbsp;</td>
		<td style="height: 40px;width:25%;">
			<input id="datalevel" type="text" name="datalevel" panelHeight="auto"/>
		</td>
	</tr>
	<p>
	<tr>
		<td style="text-align:right;height:40px; width:15%;" valign="top"><div style="margin-top:25px"><span style="color:red;font-size:15px">*</span>指标SQL脚本：&nbsp;</div></td>
		<td style="height:150px" colspan="3">
			<textarea id="kqisql" name="kqisql" style="width:723px;height:150px;resize:none;margin-top:5px;"></textarea>
			<table width="100%">
			<tr>
				<td style="width:85px;"><div class="kpi_sql_validClass"  onclick="showColumns()"  style="padding-left:28px;font-size:13px;color:#FFFFFF;margin-bottom:5px;">SQL校验</div></td>
				<td style="text-align:left;" nowrap="nowrap"> 
					<span style="color:red;font-size:15px;text-align:left;">*</span>请进行SQL校验，并选择作为指标值和维度的列
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<div id="kpi_sql_validcontent" style="overflow-y:auto;background-color:white;width:723px;height:60px;font-size:15px;border:1px solid #cbcbcb;">

					</div>
				</td>
			</tr>
			</table></br>
		</td>
	</tr>
	<tr>
		<td style="text-align:right;height:40px; width:15%;">备注：&nbsp;</td>
		<td colspan="3" style="height: 40px;">
			<textarea id="remark" name="remark" class="easyui-validatebox" style="width:723px;height:60px;resize:none" data-options="validType:'maxLength[100]'"></textarea>
		</td>
	</tr>
	</table>
	</form>
</div>